package com.example.leetcode.prcatice;

/**
 * 给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ，其中 queries[i] = [xi, mi] 。
 *
 * 第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或（XOR）得到的最大值。换句话说，答案是 max(nums[j] XOR xi) ，其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi，最终答案就是 -1 。
 *
 * 返回一个整数数组 answer 作为查询的答案，其中 answer.length == queries.length 且 answer[i] 是第 i 个查询的答案。
 *
 * 输入：nums = [0,1,2,3,4], queries = [[3,1],[1,3],[5,6]]
 * 输出：[3,3,7]
 * 解释：
 * 1) 0 和 1 是仅有的两个不超过 1 的整数。0 XOR 3 = 3 而 1 XOR 3 = 2 。二者中的更大值是 3 。
 * 2) 1 XOR 2 = 3.
 * 3) 5 XOR 2 = 7.
 *
 */
public class Test1707 {

    // 效率太低了
    public static int[] maximizeXor(int[] nums, int[][] queries) {
        int length = queries.length;
        int[] result = new int [length];
        for (int i =0 ;i<length ; i++){
            int t = queries[i][1];
            int r = 0;
            for (int t1 : nums) {
                if (t1 <= t) {
                    System.out.println("t1="+t1);
                    int temp = queries[i][0];
                    int s = temp ^ t1;
                    if (s > r) {
                        r = s;
                        System.out.println("r="+r);
                    }
                }
            }
            result [i] = r;
        }
        return result;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{0, 1, 2, 3, 4};
        int[][] queries = {{3,1},{1,3},{5,6}};
        int[] resut = maximizeXor(nums,queries);
        for (int i:
             resut) {
            System.out.println(i);
        }
    }
}
